package com.longxiao.mapper;

import com.longxiao.entity.Message;
import com.longxiao.enums.MessageType;
import com.longxiao.vo.MessageCountVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface MessageMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(Message record);

    int insertSelective(Message record);

    Message selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(Message record);

    int updateByPrimaryKey(Message record);

    // 通过时间查询消息数量
    List<MessageCountVo> selectCountByTime(Map<String, Object> param);

    // 通过类型和时间查询消息数量
    int selectCountByTypeAndTime(Map<String, Object> param);

    // 区分类型查询消息数量
    int selectCountByType(Map<String, Object> param);

    // 区分类型查询消息列表
    List<Message> selectListByType(Map<String, Object> param);

    // 删除站内信
    int deleteMessageByIdAndUserId(Message message);

    // 随机删除一条站内信
    int randomDelByUserId(Message message);

    // 更新消息状态为已读
    int msgReaded(@Param("msgId") int msgId, @Param("userId") String userId);

    // 查询未读的站内信数量
    int getUnReadMessageCount(@Param("userId") String userId, @Param("type") MessageType type);
}